package org.example.project.dao;

import org.example.project.entity.IdentificationRecord;
import org.example.project.entity.Plant;
import org.example.project.entity.PopularScience;

import java.util.List;

/**
 * @Author 岩
 * @Package org.example.project.dao
 * @Project MyApp
 * @Name PlantDao
 * @Date 2024-04-28 14:21
 * @Filename PlantDao
 */
public interface PlantDao {
    /**
     * 获取全部植物信息
     * @return 全部植物列表
     * */
    List<Plant> getAllPlants();

    /**
     * 根据植物ID获取植物信息
     * @param plantId 植物ID
     * @return 植物信息
     * */
     Plant getPlantById(int plantId);

    /**
     * 根据名称查询植物信息
     * @param plantName 植物名称
     * @return 植物信息
     * */
     List<Plant> getPlantsByName(String plantName);

     /**
      * 新增植物信息
      * @param plant 新增植物信息
      * @return 新增植物ID
      * */
     int addPlant(Plant plant);

     /**
      * 删除植物信息
      * @param plantId 待删除植物ID
      * @return 受影响条数
      * */
     int deletePlant(int plantId);

     /**
      * 更新植物信息
      * @param plant 待更新植物信息
      * @return 受影响条数
      * */
     int updatePlant(Plant plant);

     /**
      * 查询科普植物
      * @return 科普植物列表
      * */
     List<Plant> getKnowledgePlants();

    /**
     * 根据id查询科普植物信息
     * @param plantId 植物ID
     * @return 科普植物信息
     * */
     Plant getKnowledgePlantById(int plantId);

     /**
      * 根据名称查询科普植物信息
      * @param plantName 植物名称
      * @return 科普植物信息
      * */
     List<Plant> getKnowledgePlantsByName(String plantName);

     /**
      * 新增科普植物信息
      * @param plantId 新增科普植物ID
      * @return 新增科普植物ID
      * */
     int addKnowledgePlant(PopularScience plantId);

     /**
      * 删除科普植物信息
      * @param plantId 待删除科普植物ID
      * @return 受影响条数
      * */
     int deleteKnowledgePlant(int plantId);

     /**
      * 新增识别记录
      * @param pR 记录
      * @return 新增记录ID
      * */
     int addRecognitionRecord(IdentificationRecord pR);

     /**
      * 删除识别记录
      * @param plantId 待删除科普植物ID
      * @return 受影响条数
      * */
     int deleteRecognitionRecord(int plantId);

     /**
      * 获取全部识别记录
      * @return 全部识别记录列表
      * */
     List<Plant> getAllRecognitionRecords();

     /**
      * 根据植物id查询识别记录
      * @param plantId 植物ID
      * @return 识别记录
      * */
      Plant getRecognitionRecordByPlantId(int plantId);

      /**
       * 根据植物名称查询识别记录
       * @param plantName 植物名称
       * @return 识别记录
       * */
      List<Plant> getRecognitionRecordByPlantName(String plantName);

      /**
       * 根据用户ID查询识别记录
       * @param userId 用户ID
       * @return 识别记录
       * */
      List<Plant> getRecognitionRecordByUserId(int userId);
}
